package org.xx.armory.config;

/**
 * 有名字的配置节。
 * <p>有名字的配置节可以指定名字，可以指定是否可用。</p>
 */
public interface NamedSection {
    /**
     * 获取配置节的名字。
     *
     * @return 配置节的名字。
     */
    String getName();

    /**
     * 设置配置项的名字。
     *
     * @param name
     *         配置节的名字。
     * @throws IllegalArgumentException
     *         如果参数 {@code name}是{@code null}或者只包含空白字符。
     */
    void setName(
            String name
    );

    /**
     * 判断此配置节是否可用。
     *
     * @return 如果此配置节可用则返回 {@code true}，否则返回{@code false}。
     */
    boolean isEnabled();

    /**
     * 设置此配置节是否可用。
     *
     * @param enabled
     *         此配置节是否可用。
     */
    void setEnabled(
            boolean enabled
    );
}
